iT邦幫忙

2022 iThome 鐵人賽

DAY 11
2
自我挑戰組

挑戰 blind 75: 以圖解方式練習解題系列 第 32

圖解 blind 75: Tree 資料結構解析

  • 分享至 

  • xImage
  •  

Tree 資料結構解析

Tree

Tree(樹) 是一種非線性階層式排列資料結構,因為具有樹狀結構,看起來像一個倒過來生長的樹。

樹狀結構的基本資料存儲單位是節點 (Node)。

節點(Node)

節點 (Node) 具有以下欄位:

  1. 資料參照: 用來存儲對應的資料或是對應到資料的參考
  2. 子節點 (child) : 用來存儲指向下一個階層節點的指標。

每個 Tree(樹) 只會有一個起始點,

這個點叫作根節點 (root)

每個 Tree(樹) 所有樹內的節點不會形成任何迴圈。

Tree(樹) 的節點類型

Tree(樹) 的節點類型除了根節點 (root) 還有以下幾種:

  1. 樹葉節點(Leaf): 沒有子節點的節點
  2. 家長節點(Parent): 當一個節點具有子節點,該節點是子節點的家長節點
  3. 手足節點(Sibling): 具有同一個家長節點的兩個節點,彼此是彼此的手足結點(Sibling)

節點深度

某個節點 n 的深度代表,從根節點到節點 n 的路徑長度

Tree(樹) 的高度

從根結點到最長樹葉的路徑距離

Tree(樹) 的種類

Tree(樹) 的種類根據樹中任意子節點間是否有順序關係,分為

  1. 無序樹:樹中任意子節點間沒有順序關係,也稱作自由樹
  2. 有序樹:樹中任意子節點間有順序關係

有序樹根據子節點分佈狀態又可分為:

  1. 二元樹: 每個節點最多含有兩個子節點
  2. 霍夫曼樹:用於霍夫曼編碼,可以讓編碼長度最短的最佳二元樹。
  3. B樹: 一種對讀寫操作進行最佳化的自平衡的二元搜尋樹,能夠保持資料有序,擁有多於兩個子樹。

二元樹種類:

用途

通常會透過有序樹來將輸入的數據有一些基礎的分類,用來快速查詢相關資料的資料做存取。

比如說,把串流數據依照二元搜尋樹的方式存儲就可以讓搜訊效率達到 O(logN)。


上一篇
圖解 blind 75: LinkdedList - Merge k Sorted Lists(3/3)
下一篇
圖解 blind 75: Tree - Same Tree (1/3)
系列文
挑戰 blind 75: 以圖解方式練習解題93
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言